package com.aoxin.mapper.opm;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.aoxin.model.dto.SelectDto;
import com.aoxin.model.dto.UserDto;
import com.aoxin.model.opm.SlfEmployee;

/**
 * 员工Mapper
 * 
 * @author Melody
 * @date 2018年3月26日 下午8:07:07
 */
public interface SlfEmployeeMapper {

	/**
	 * 批量删除员工ID
	 * 
	 * @param employeeIds
	 *            员工ID集合
	 */
	void deleteByPrimaryKeys(List<Integer> employeeIds);

	/**
	 * 添加员工信息
	 * 
	 * @param record
	 *            员工
	 */
	void insertSelective(SlfEmployee record);

	/**
	 * 查询员工信息
	 * 
	 * @param employeeId
	 *            员工ID
	 * @return
	 */
	SlfEmployee selectByPrimaryKey(Integer employeeId);

	/**
	 * 修改员工信息
	 * 
	 * @param record
	 */
	void updateByPrimaryKeySelective(SlfEmployee record);

	/**
	 * 获取记录数
	 * 
	 * @param map
	 *            条件集合
	 * @return 记录数
	 */
	Long getRecordCount(Map<String, Object> map);

	/**
	 * 检查登录名时候重复
	 * 
	 * @param loginAccount
	 *            登录名
	 * @param employeeId
	 *            人员ID
	 * @return 记录数
	 */
	Long checkLoginName(@Param("loginAccount") String loginAccount, @Param("employeeId") Integer employeeId);

	/**
	 * 获取下一排序号
	 * 
	 * @param schoolId
	 *            学校ID
	 * @return 序号
	 */
	Long getNextSequence(@Param("schoolId") Integer schoolId);

	/**
	 * 查询人员
	 * 
	 * @param map
	 *            条件集合
	 * @return 人员集合
	 */
	List<SlfEmployee> getList(Map<String, Object> map);

	/**
	 * 批量修改员工状态
	 * 
	 * @param employeeIds
	 *            员工ID
	 * @param state
	 *            状态
	 */
	void updateStates(@Param("employeeIds") List<Integer> employeeIds, @Param("state") Integer state);

	/**
	 * 根据登录名、密码查询人员
	 * 
	 * @param loginName
	 *            登录名
	 * @param password
	 *            密码
	 * @return 员工信息
	 */
	SlfEmployee getByLoginNameAndPassword(@Param("loginName") String loginName, @Param("password") String password);

	/**
	 * 批量初始化员工密码
	 * 
	 * @param employeeIds
	 * @param password
	 * @return
	 */
	Integer iniPassword(@Param("employeeIds") List<Integer> employeeIds, @Param("password") String password);

	/**
	 * 查询用户密码是否准确
	 * 
	 * @param employeeId
	 * @param password
	 * @return
	 */
	Integer getCount(@Param("employeeId") Integer employeeId, @Param("password") String password);

	/**
	 * 根据人员ID查询人员
	 * 
	 * @param orgId
	 *            机构ID
	 * @return 人员集合
	 */
	List<SelectDto> getListByOrg(@Param("orgId") Integer orgId, @Param("schoolId") Integer schoolId);

	/**
	 * 查询系统中所有用户
	 * 
	 * @param map
	 *            条件集合
	 * @return 用户集合
	 */
	List<UserDto> getUserDtoList(Map<String, Object> map);

	/**
	 * 根据学校Id查询学校下的教师
	 * @param schoolId
	 * @return
	 */
	List<SelectDto> getTeacherBySchoolId(Integer schoolId);
	
	
	List<Map<String,Object>> queryRoleNameAndId(@Param("employeeId") Integer employeeId);
}